October 30, 1992 I just bought and installed a math coprocessor in my computer. I have several programs that benefit greatly from this upgrade. I have an 80386 DX / 33 Mhz computer. I chose a Cyrix 83D87 math chip. It is basically a clone of the Intel 80387 with a lower price tag. The Intel chip goes for about $180.00 by mail order usually, while the Cyrix can be mail-ordered for about $135.00. Tomorrow the prices may be even lower. In my case, the firm that I bought my computer from offers upgrades to their customers at even lower prices. I paid $116.00. A math chip does what is called "floating point math". Here's what that means: Consider only whole numbers. If you add whole numbers, the sum is a whole number. If you multiply or subtract whole numbers, the result is always whole numbers. But if you divide 2 whole numbers, the result may or may not be a whole number. The result may be a decimal number. Division of whole numbers goes by a name in the math world called `rational expression'. (In this paper I am using the term "whole number" very loosely, it can include zero or negatives for my purposes here. The type of whole numbers I mean can also be called integers). Well, decimal numbers is what in the computer world is called floating point math. In a computer without a math chip, decimal numbers are handled by the CPU. (In my case, it would be handled by the 80386). But it can be a tough, time-consuming process, in comparison to whole number types of operations. There are 2 types of decimal numbers, one eventually results in a repeating pattern, as in 2.000000000 or 2143333333333...etc (which is 643 divided by 300, the 3s never end). Another might be 3.143789789789...etc, the 789s never end. The other type has a non-repeating pattern, as in 1.2345678910 or 3.1415926535. The repeaters are called rational numbers. The non-repeaters are called irrational numbers. Here is how we know which is which: Division of whole numbers results in rational answers. Division involving any decimal numbers results in irrational answers. In the ideal case, a math chip would always take over all decimal operations. This would make for essentially 8 different kinds of math: addition, subtraction, multiplication, and division of whole numbers, and the same 4 operations involving any decimal numbers. The 8th is called irrational math, also involving decimals (non-repeating decimal patterns, that are gotten by dividing any decimals). The math chip would then take over 5 of those 8 operations, since 5 of them are floating point operations, allowing the CPU to do other stuff eight- fifths of the time. Eight-fifths = 1.6, so then the computer would run exactly 60% faster. But alas, it isn't quite that simple. Software must be specifically written to use the math chip. If it isn't, the chip remains idle. There are 2 different kinds of such softwares: The kind that requires a math chip to even run, and the kind that doesn't require it but uses a math chip if it is there. I have several of the latter kind, including EZ Cosmos (an astronomy program), Mercury (a math program), etc. EZ Cosmos runs 5 times faster than it used to, and Mercury runs 5.5 times faster than it used to. Many softwares don't use a math chip at all. I also have other math-chip-aware programs. One must read the fine print. Do not ever install a TSR math chip emulator. The only purpose of these is to allow the running of programs that require a math coprocessor to even run. If it works, you are running a huge risk of the program crashing at an inconvenient time, resulting in lost data. Secondly, many programmers know how to write software to tell the difference between an emulator, and the real chip. If this programmer(s) happens to be buddy-buddy with a math chip manufacturer, then he/she might write their program to refuse to run if only an emulator is present. Furthermore, for the kind of program that runs without a math chip, but runs much faster with one, it won't run a smidgen faster if only an emulator is present. Typically an author of an emulator wants anywhere from $5.00 to $55.00 for their software emulator. Some will admit the limitations and risks of their programs, while others won't. You are much better off investing in the real chip for $116.00 to $180.00. To change the subject, I will address the proof that division by zero is not defined. 8 If you say --- = 2, you can check it by multiplying the result of 2 4 times the denominator of 4, and 2 x 4 = 8, the numerator. 0 If you say --- = 0, you can check it by multiplying the result of 0 4 times the denominator of 4, and 0 x 4 = 0, the numerator. 4 However, --- = what, because what x 0 = 4? This is undefined. 0 0 If you say --- = 0, guess what, that's wrong! The zero denominator may 0 as well be ANY number, since: 0 x Anything = 0. Zero in the denominator is never defined. If you are doing a long, complicated algebra problem, and somewhere along the line you end with a zero denominator, then either 1) You made a mistake somewhere along the line. 2) The problem is trying to tell you it can't be solved. If 2, then A) Possibly useful; you have a vertical slope on your Cartesian graph. B) Possibly useful; since you realize that you aren't working with a function in this part of the problem. C) Give up and try to think of something happy. If you are using a math program, and for whatever reason a division by zero is attempted, one of three things will happen: 1) The program recognizes the offense, notifies you, and gives you a chance to correct things. So far this is a quality program. 2) The program recognizes the offense, and returns control of the computer to the operating system. Annoying. Possible lost data. 3) The program does not recognize the error, and the computer "hangs", and all you can hope to do is power down and re-boot. Infuriating. Possible lost data. Try to think of something happy. Actually, it takes under 10 lines of text source code for a programmer to test for a zero denominator, if it's found then put a message on the screen, abort the division before it's attempted, and return control within the program to the request for input. Except for beginning programmers, there's hardly an excuse to not program the computer this way. In 2 and 3 this was left out, and it is up to the compiler (a small part of every program) to either return to the operating system, or to freak out and hang the computer (cheap compiler). Borland's Turbo Pascal compiler simply jumps to the operating system.